package core.auxiliar;
/**
 * Enum de tipos primitivos de nossa versão da linguagem. 
 * 
 * @author Rodolpho Uchôa
 * @author Rubens Van Dingenen
 * @author Saulo Toledo
 */
public enum TypeEnum {
	
	INTEGER("Integer"),
	HEXINTEGER("Integer (Hexadecimal)"),
	OCTALINTEGER("Integer (Octal)"),
	LONGINT("LongInt"),
	REAL("Real"),
	LONGREAL("LongReal"),
	STRING("String"),
	CARDINAL("Cardinal"),
	CHAR("Char"),
	BOOLEAN("Boolean"),
	ARRAY("Array"),
	NIL("Nil"),
	PROCEDURE("Procedure"),
    FUNCTION("Function"),
    BITSET("BitSet"),
    POINTER("Pointer"),
    SET("Set"),
    REGISTER("Register"),
    USER_DEFINED("User Defined Type"),
    ENUMERATION("Enumeration"),
    SUBRANGE("Subrange"),
    MODULE("Module"),
    PREDEFINED_PROCEDURE("Predefined Procedure"),
    PREDEFINED_FUNCION("Predefined Function");
	
	/**
	 * Guarda o nome da constante do Enum.
	 */
	private String name;
	
	/**
	 * Construtor padrão do Enum.
	 * @param name O nome equivalente à constante referenciada do Enum.
	 */
	TypeEnum(String name) {
		this.name = name;
	}
	
	/**
	 * Retorna o nome equivalente à constante do Enum.
	 * @return O nome equivalente à constante do Enum.
	 */
	public String getName() {
		return this.name;
	}
}
